const dayjs = require('dayjs');
/**
 * 列表组件 Store
 * 处理列表数据的缓存和状态管理
 */
import { observable, action } from '../../../../../miniprogram_npm/mobx-miniprogram/index';

// 使用标准导出方式
export const listStore = observable({

  // 数据属性
  loading: false,
  dataCache: {},
  
  // 最大缓存时间（毫秒）
  maxCacheAge: 30 * 60 * 1000, // 30分钟
  
  // 缓存存储信息
  cacheInfo: {},
  
  // 设置加载状态
  setLoading: action(function(status) {
    this.loading = status;
  }),
  
  // 缓存数据
  cacheData: action(function(key, data) {
    if (!key || !data) return;
    
    this.dataCache[key] = data;
    this.cacheInfo[key] = {
      timestamp: dayjs().valueOf()
    };
    
    // 清理过期缓存
    this._cleanExpiredCache();
  }),
  
  // 获取缓存数据
  getCachedData: function(key) {
    if (!key || !this.dataCache[key]) return null;
    
    const cacheInfo = this.cacheInfo[key];
    if (!cacheInfo) return null;
    
    // 检查缓存是否过期
    const now = dayjs().valueOf();
    if (now - cacheInfo.timestamp > this.maxCacheAge) {
      // 缓存过期，清除
      this.clearCache(key);
      return null;
    }
    
    return this.dataCache[key];
  },
  
  // 清除指定缓存
  clearCache: action(function(key) {
    if (!key) return;
    
    delete this.dataCache[key];
    delete this.cacheInfo[key];
  }),
  
  // 清除所有缓存
  clearAllCache: action(function() {
    this.dataCache = {};
    this.cacheInfo = {};
  }),
  
  // 清理过期缓存
  _cleanExpiredCache: function() {
    const now = dayjs().valueOf();
    
    Object.keys(this.cacheInfo).forEach(key => {
      const info = this.cacheInfo[key];
      if (now - info.timestamp > this.maxCacheAge) {
        delete this.dataCache[key];
        delete this.cacheInfo[key];
      }
    });
  }
}); 